<?php

require_once('Corporate.php');

class Account {

//basic client account information
    protected $id_account;
    protected $name;
    protected $db_name;
    protected $eai_status;
    protected $eai_start_contrat_date;
    protected $eai_end_contrat_date;
    protected $option_gui;

    /**
     * @var Corporate 
     */
    public $obj_Corporate;

//============================================================================
// __construct
//============================================================================
    public function __construct($param_id_compte_client) {
        GLOBAL $REQUEST_003;

        $tab_arg = array(':param_id_compte_client' => $param_id_compte_client);

        $data = db_request_select($REQUEST_003, $tab_arg);

        $this->id_account = $param_id_compte_client;
        $this->name = $data[0][1];
        $this->db_name = $data[0][2];
        $this->eai_status = $data[0][3];
        $this->eai_start_contrat_date = $data[0][5];
        $this->eai_end_contrat_date = $data[0][6];
        $this->option_gui = $data[0][7];

        $this->obj_Corporate = new Corporate($this->db_name);
    }

//============================================================================
// get_id_client_account
//============================================================================
    public function get_id_client_account() {
        return $this->id_account;
    }

//============================================================================
// get_eai_status
//============================================================================
    public function get_eai_status() {
        return $this->eai_status;
    }

//============================================================================
// get_option_gui
//============================================================================
    public function get_option_gui() {
        return $this->option_gui;
    }

    public function getLogo() {
        if ($this->get_option_gui() == 1) {
            return $this->db_name . ".png";
        }
    }

//============================================================================
// get_name
//============================================================================
    public function get_name() {
        return $this->name;
    }

//============================================================================
// get_eai_valid
// fonction qui controle si ce compte client a les droits de EAI
// $result: 0 = Pas d'abonnement au module EAI
//          1 = Abonnement valide au module EAI
//          2 = Date de fin d'abonnement dépassée
//============================================================================
    public function get_eai_valid() {
        $result = false;
        if ($this->eai_status == 1) {
            $aujourdhui = new DateTime("now");
            $date_debut = DateTime::createFromFormat("d/m/Y", $this->eai_start_contrat_date);
            $date_fin = DateTime::createFromFormat("d/m/Y", $this->eai_end_contrat_date);

            if ($aujourdhui >= $date_debut && $aujourdhui <= $date_fin)
                $result = true;
            else
                $result = false;
        }
        return $result;
    }

//============================================================================
// get_db_name
//============================================================================
    public static function get_db_name_($id) {
        global $REQUEST_009;
        return db_request_select($REQUEST_009, [':param_id_compte_client' => $id])[0][0];
    }

    public function get_db_name($id = NULL) {
        if ($id == NULL)
            return $this->db_name;
        else
            return self::get_db_name_($id);
    }

//============================================================================
// get_list_node
//============================================================================
    public function get_list_node($param_db_name = NULL) {
        GLOBAL $REQUEST_028;

        try {
// Je récupère la liste des services
            return db_request_select($REQUEST_028, NULL, ($param_db_name == NULL) ? $this->db_name : $param_db_name);
        } catch (Exception $e) {
            throw new Exception($e->getMessage());
        }
    }

//============================================================================
// get_list_client
//============================================================================
    public function get_list_client() {
        GLOBAL $REQUEST_030;

        try {
            return db_request_select($REQUEST_030, NULL);
        } catch (Exception $e) {
            throw new Exception($e->getMessage());
        }
    }

//============================================================================
// create_client_account
//============================================================================
    public function create_client_account($tab_arg) {
        GLOBAL $REQUEST_004, $REQUEST_005, $REQUEST_006, $MESSAGE_0002, $MESSAGE_0003;
        try {

// PDO Connection
            $db_connection_props = [
                'mysql:host' => DB_HOST,
                'port' => DB_PORT,
            ];

            array_walk($db_connection_props, function(&$value, $key ) {
                $value = $key . '=' . $value;
            });

            $db_connection_string = implode('; ', $db_connection_props);
            $db_connection = new PDO($db_connection_string, DB_USER, DB_PWD, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));

// Etape 1: On vérifie que le nom de client n'existe pas déjà
            $data = db_request_select($REQUEST_004, [':client_name' => $tab_arg[':client_name']]);
            if ($data[0][0] != 0) {
                throw new Exception($MESSAGE_0003);
            }

// Etape 2: On vérifie que le nom de la base de données n'existe pas déjà
            $data = db_request_select($REQUEST_005, [':db_name' => $tab_arg[':db_name']]);
            if ($data[0][0] != 0) {
                throw new Exception($MESSAGE_0002);
            }

// Etape 3: On créé la nouvelle base de données du client
            if (CAN_CREATE_DATABASE) {
// désactivé car pas les droits au niveau de l'hébergeur et doit être créé préalablement par SIRH
                db_request_create_db($tab_arg[':db_name'], $db_connection);
            }

// Etape 4: ici nous lancons le script de création des nouvelles tables d'administrations de cette base de données
            db_request_exec_sql_file(Queries::ADM(), $db_connection);

// Etape 5: Nous créons au moins le noeud le père pour l'arborescence de la société avec le nom du client
            $tab_arg_1 = [':designation' => $tab_arg[':client_name'],
                ':type' => 10,
                ':noeud_parent' => 0];
            $this->obj_Corporate->create_corporate_node($tab_arg_1, $tab_arg[':db_name']);

// Etape 6: On insère le compte client dans la base de données centrale
            db_request_insert($REQUEST_006, $tab_arg);

// Etape 7: ici nous lancons le script de création des nouvelles tables du module EAI de cette base de données
// Ici nous lancons les scripts d'insertion des modèles EAI
            db_request_exec_sql_file(Queries::EAI(), $db_connection);

//On déroule les modèles EAI à insèrer dans la base de données
            for ($index = 1;
            ; $index++) {
                $filename = Queries::EAI_TEMPLATE($index);
                if (!isset($filename)) {
                    break;
                }
                db_request_exec_sql_file($filename, $db_connection);
            }
        } catch (Exception $e) {
            $exception = $e;
        }
        unset($db_connection);

        if (isset($exception)) {
            throw $exception;
        }
    }

//============================================================================
// update_client_account
//============================================================================
    public function update_client_account($tab_arg) {
        GLOBAL $REQUEST_011;
        try {
            db_request_update($REQUEST_011, $tab_arg);
        } catch (Exception $e) {
            throw new Exception($e->getMessage());
        }
    }

//============================================================================
// delete_client_account
//============================================================================
    public function delete_client_account($tab_arg) {
        GLOBAL $REQUEST_007, $REQUEST_049, $MESSAGE_0004, $MESSAGE_0038;
        try {
//le super administrateur ne peut pas détruire son propre compte
            if ($this->id_account != $tab_arg[':id_client_account']) {
                $db_name = $this->get_db_name($tab_arg[':id_client_account']);

// suppression de chaque user de ce client
                db_request_delete($REQUEST_049, $tab_arg);

// suppression du compte client dans la base centrale
                db_request_delete($REQUEST_007, $tab_arg);

                if (CAN_CREATE_DATABASE) {
// Option désactivée car pas les droits au niveau de l'hébergeur doit être effectué par SIRH
                    db_request_delete_db($db_name);
                }

                if (file_exists(PATH_LOGOS . $db_name . ".png")) {
                    if (!unlink(PATH_LOGOS . $db_name . ".png")) {
                        throw new Exception($MESSAGE_0038);
                    }
                }
            } else {
                throw new Exception($MESSAGE_0004);
            }
        } catch (Exception $e) {
            throw $e;
        }
    }

//============================================================================
// insert_eai_template
//============================================================================
    public function insert_eai_template($id_template, $name_template, $designation, $db_name) {
        try {
            GLOBAL $REQUEST_119;

            $tab = array(':id_eai_template' => $id_template,
                ':name' => $name_template,
                ':designation' => $designation);
//echo "<br/>requete : ".$id_template." / ".$name_template." / ".$name_template." / ".$designation ; 
            db_request_insert($REQUEST_119, $tab, $db_name);
        } catch (Exception $e) {
            throw new Exception($e->getMessage());
        }
    }

//============================================================================
// show_form_client_account
//============================================================================
    public function show_form_client_account($data = NULL, $type_affichage = 0) {

        GLOBAL $LABEL_0014, $LABEL_0020, $LABEL_0021, $LABEL_0022, $LABEL_0023, $LABEL_0024, $LABEL_0032,
        $LABEL_0100, $LABEL_0101, $LABEL_0102,
        $MESSAGE_9000,
        $DISPLAY_CREATION, $DISPLAY_VISUALISATION, $DISPLAY_UPDATE,
        $CHECK_CLIENT_NAME, $CHECK_DB_NAME, $CHECK_DATE, $SET_VALUE_BIN, $SET_DATE_REQUIRED_EAI_CREATION, $SET_DATE_REQUIRED_EAI_UPDATE, $SET_NAME_FILE;

        if ($type_affichage == $DISPLAY_CREATION) {
            echo gui_form_post_open("client_creation", RenderUrl('accounts/create?account=list'), "multipart/form-data");
        } elseif ($type_affichage == $DISPLAY_UPDATE) {
            echo gui_form_post_open("client_update", RenderUrl('accounts/update?account=list'), "multipart/form-data");
            echo gui_form_input_hidden_field("id_client_account", $data[0]);
        }

        echo gui_table_tag_open("100%", 0, 5, 0, NULL, NULL, NULL);

//début cartouche titre
        echo gui_tr_tag_open();
        echo gui_td_tag($LABEL_0102, NULL, "left", NULL, 4, NULL, "td_data_bold", NULL, NULL);
        echo gui_tr_tag_close();
//fin cartouche titre

        echo gui_tr_tag_open();

        echo gui_td_tag("<label for=\"client_name\">" . Strings::LABEL_0019 . "</label>"); // a verifier si label utile
        $string_data = "&nbsp;";
        if ($type_affichage == $DISPLAY_CREATION)
            $string_data .= gui_form_input_text_field("client_name", "", 20, 20, "client_name", true, false, $CHECK_CLIENT_NAME);
        elseif ($type_affichage == $DISPLAY_VISUALISATION)
            $string_data .= gui_form_input_text_field("client_name", $data[1], 20, 20, "client_name", true, true);
        elseif ($type_affichage == $DISPLAY_UPDATE)
            $string_data .= gui_form_input_text_field("client_name", $data[1], 20, 20, "client_name", true, false, $CHECK_CLIENT_NAME);
        echo gui_td_tag($string_data);

        echo gui_td_tag("<label for=\"db_name\">" . $LABEL_0020 . "</label>"); // a verifier si label utile
        $string_data = "";
        if ($type_affichage == $DISPLAY_CREATION)
            $string_data .= gui_form_input_text_field("db_name", "", 20, 12, "", true, false, $CHECK_DB_NAME);
        elseif ($type_affichage == $DISPLAY_VISUALISATION || $type_affichage == $DISPLAY_UPDATE)
            $string_data .= gui_form_input_text_field("db_name", $data[2], 20, 12, "", true, true);
        echo gui_td_tag($string_data);

        echo gui_tr_tag_close();

        echo gui_tr_tag_open();

        echo gui_td_tag("<label for=\"opt_graph\">" . $LABEL_0021 . "</label>");
        $string_data = "";
        if ($type_affichage == $DISPLAY_CREATION)
            $string_data .= gui_form_input_check_field("opt_graph", 0, "opt_graph", false, false, false, $SET_NAME_FILE);
        elseif ($type_affichage == $DISPLAY_VISUALISATION)
            $string_data .= gui_form_input_check_field("opt_graph", $data[7], "opt_graph", ($data[7] == 1), false, true);
        elseif ($type_affichage == $DISPLAY_UPDATE)
            $string_data .= gui_form_input_check_field("opt_graph", $data[7], "opt_graph", ($data[7] == 1), false, false, $SET_NAME_FILE);
        echo gui_td_tag($string_data);

        $string_data = "";
        echo gui_td_tag("<label for=\"upload_logo\">" . $LABEL_0014 . "</label>");
        if ($type_affichage == $DISPLAY_CREATION) {
            echo gui_form_input_hidden_field("MAX_FILE_SIZE", 524288); //taille max du fichier image à 500 Ko écrit ici en Octects
            $string_data = gui_form_input_file_field("upload_logo", "", 40, "upload_logo_opt_graph", false);
        } elseif ($type_affichage == $DISPLAY_UPDATE) {
            echo gui_form_input_hidden_field("MAX_FILE_SIZE", 524288); //taille max du fichier image à 500 Ko écrit ici en Octects
            $string_data = gui_form_input_file_field("upload_logo", "", 40, "upload_logo_opt_graph", ($data[7] == 1));
        }
        echo gui_td_tag($string_data);

        echo gui_tr_tag_close();

//début cartouche titre
        echo gui_tr_tag_empty(1, 4);
        echo gui_tr_tag_open();
        echo gui_td_tag($LABEL_0022, NULL, "left", NULL, 4, NULL, "td_data_bold", NULL, NULL);
        echo gui_tr_tag_close();
//fin cartouche titre

        echo gui_tr_tag_open();

        echo gui_td_tag("<label for=\"eai\">" . $LABEL_0101 . "</label>");
        $string_data = "";
        if ($type_affichage == $DISPLAY_CREATION)
            $string_data .= gui_form_input_check_field("eai", 0, "eai", false, false, false, $SET_DATE_REQUIRED_EAI_CREATION);
        elseif ($type_affichage == $DISPLAY_VISUALISATION)
            $string_data .= gui_form_input_check_field("eai", 0, "eai", ($data[3] == 1), false, true);
        elseif ($type_affichage == $DISPLAY_UPDATE)
            $string_data .= gui_form_input_check_field("eai", $data[3], "eai", ($data[3] == 1), false, false, $SET_DATE_REQUIRED_EAI_UPDATE);
        echo gui_td_tag($string_data);

//=========================================================================
// Gestion de l'affiche des modèles EAI de SIRH
        $dataEAITemplates = lib_get_eai_template();
        if ($type_affichage == $DISPLAY_CREATION) {
            $string_data = "";
            echo gui_td_tag_open(NULL, NULL, NULL, 2, 3, NULL, NULL, NULL);
            echo gui_table_tag_open("100%", 0, 5, 0, NULL, NULL, NULL);
            echo gui_tr_tag_open();
            echo gui_th_tag($LABEL_0100, NULL, NULL, NULL, 3);
            echo gui_tr_tag_close();
            for ($inc2 = 0, $stop = (count($dataEAITemplates) - 1); $inc2 < $stop; $inc2++) {
                echo gui_tr_tag_open();
                $string_data = gui_form_input_check_field($dataEAITemplates[$inc2][2], $dataEAITemplates[$inc2][0], $dataEAITemplates[$inc2][2], false, false, false, 0);
                echo gui_td_tag($string_data);
                echo gui_td_tag("<label for=\"" . $dataEAITemplates[$inc2][2] . "\">" . $dataEAITemplates[$inc2][2] . "</label>");
                $string_data = gui_form_input_text_field($dataEAITemplates[$inc2][2] . "_designation_creation", $dataEAITemplates[$inc2][1], 60, 255, $dataEAITemplates[$inc2][2] . "_designation_creation", false, false);
                echo gui_td_tag($string_data);
                echo gui_tr_tag_close();
            }
            echo gui_table_tag_close();
            echo gui_td_tag_close();
        } elseif ($type_affichage == $DISPLAY_VISUALISATION) {
            $dataEAITemplatesClient = lib_get_eai_template($data[2]);
            $string_data = "";

            echo gui_td_tag_open(NULL, NULL, NULL, 2, 3, NULL, NULL, NULL);
            echo gui_table_tag_open("100%", 0, 5, 0, NULL, NULL, NULL);
            echo gui_tr_tag_open();
            echo gui_th_tag($LABEL_0100, NULL, NULL, NULL, 3);
            echo gui_tr_tag_close();
            for ($inc3 = 0, $stop = (count($dataEAITemplates) - 1); $inc3 < $stop; $inc3++) {
                $checked = false;
                $string_data_2 = NULL;
// Je parse le tableau des EAI du client pour voir si je retrouve l'EAI en cours de lecture de la base sirh-central, 
// ce qui veut dire qu'il serait activé
                for ($inc2 = 0, $stop2 = (count($dataEAITemplatesClient) - 1); $inc2 < $stop2; $inc2++) {
                    if ($dataEAITemplatesClient[$inc2][0] == $dataEAITemplates[$inc3][0]) {
                        $checked = true;
                        $string_data_2 = gui_form_input_text_field($dataEAITemplatesClient[$inc2][2] . "_designation", $dataEAITemplatesClient[$inc2][1], 60, 255, $dataEAITemplatesClient[$inc2][2] . "_designation", false, true);
                    }
                }
                echo gui_tr_tag_open();
                $string_data = gui_form_input_check_field($dataEAITemplates[$inc3][2] . "_visu", $dataEAITemplates[$inc3][0], $dataEAITemplates[$inc3][2] . "_visu", $checked, false, true, 0);
                echo gui_td_tag($string_data);
                echo gui_td_tag("<label for=\"" . $dataEAITemplates[$inc3][2] . "_visu\">" . $dataEAITemplates[$inc3][2] . "</label>");
                if ($string_data_2 == NULL)
                    $string_data_2 = gui_form_input_text_field($dataEAITemplates[$inc3][2] . "_designation", $dataEAITemplates[$inc3][1], 60, 255, $dataEAITemplates[$inc3][2] . "_designation", false, true);
                echo gui_td_tag($string_data_2);
                echo gui_tr_tag_close();
                $checked = false;
            }
            echo gui_table_tag_close();
            echo gui_td_tag_close();
        }
        elseif ($type_affichage == $DISPLAY_UPDATE) {
            $dataEAITemplatesClient = lib_get_eai_template($data[2]);
            $string_data = "";
            echo gui_td_tag_open(NULL, NULL, NULL, 2, 3, NULL, NULL, NULL);
            echo gui_table_tag_open("100%", 0, 5, 0, NULL, NULL, NULL);
            echo gui_tr_tag_open();
            echo gui_th_tag($LABEL_0100, NULL, NULL, NULL, 3);
            echo gui_tr_tag_close();
            for ($inc3 = 0, $stop = (count($dataEAITemplates) - 1); $inc3 < $stop; $inc3++) {
                $checked = false;
                $string_data_2 = NULL;
// Je parse le tableau des EAI du client pour voir si je retrouve l'EAI en cours de lecture de la base sirh-central, ce qui veut dire qu'il serait activé
                for ($inc2 = 0, $stop2 = (count($dataEAITemplatesClient) - 1); $inc2 < $stop2; $inc2++) {
                    if ($dataEAITemplatesClient[$inc2][0] == $dataEAITemplates[$inc3][0]) {
                        $checked = true;
                        $string_data_2 = gui_form_input_text_field($dataEAITemplatesClient[$inc2][2] . "_designation_update", $dataEAITemplatesClient[$inc2][1], 60, 255, $dataEAITemplatesClient[$inc2][2] . "_designation_update", false, false);
                    }
                }
                echo gui_tr_tag_open();
                $string_data = gui_form_input_check_field("update_" . $dataEAITemplates[$inc3][2], $dataEAITemplates[$inc3][0], "update_" . $dataEAITemplates[$inc3][2], $checked, false, false, 0);
                echo gui_td_tag($string_data);
                echo gui_td_tag("<label for=\"update_" . $dataEAITemplates[$inc3][2] . "\">" . $dataEAITemplates[$inc3][2] . "</label>");
                if ($string_data_2 == NULL)
                    $string_data_2 = gui_form_input_text_field($dataEAITemplates[$inc3][2] . "_designation_update", $dataEAITemplates[$inc3][1], 60, 255, $dataEAITemplates[$inc3][2] . "_designation_update", false, false);
                echo gui_td_tag($string_data_2);
                echo gui_tr_tag_close();
                $checked = false;
            }
            echo gui_table_tag_close();
            echo gui_td_tag_close();
        }

        echo gui_tr_tag_close();

        echo gui_tr_tag_open();

        echo gui_td_tag("<label for=\"start_eai\">" . $LABEL_0023 . "</label>");
        $string_data = "&nbsp;";
        if ($type_affichage == $DISPLAY_CREATION)
            $string_data .= gui_form_input_text_field("start_eai", "", 11, 10, "datepicker_creation_start_eai", false, false, $CHECK_DATE);
        elseif ($type_affichage == $DISPLAY_VISUALISATION)
            $string_data .= gui_form_input_text_field("start_eai", (strcmp($data[5], "00/00/0000") != 0) ? $data[5] : "", 11, 10, "", false, true);
        elseif ($type_affichage == $DISPLAY_UPDATE)
            $string_data .= gui_form_input_text_field("start_eai", (strcmp($data[5], "00/00/0000") != 0) ? $data[5] : "", 11, 10, "datepicker_update_start_eai", false, false, $CHECK_DATE);
        echo gui_td_tag($string_data);

        echo gui_tr_tag_close();

        echo gui_tr_tag_open();

        echo gui_td_tag("<label for=\"end_eai\">" . $LABEL_0024 . "</label>");
        $string_data = "&nbsp;";
        if ($type_affichage == $DISPLAY_CREATION)
            $string_data .= gui_form_input_text_field("end_eai", "", 11, 10, "datepicker_creation_end_eai", false, false, $CHECK_DATE);
        elseif ($type_affichage == $DISPLAY_VISUALISATION)
            $string_data .= gui_form_input_text_field("end_eai", (strcmp($data[6], "00/00/0000") != 0) ? $data[6] : "", 11, 10, "", false, true);
        elseif ($type_affichage == $DISPLAY_UPDATE)
            $string_data .= gui_form_input_text_field("end_eai", (strcmp($data[6], "00/00/0000") != 0) ? $data[6] : "", 11, NULL, "datepicker_update_end_eai", false, false, $CHECK_DATE);
        echo gui_td_tag($string_data);

        echo gui_tr_tag_close();
        echo gui_tr_tag_empty(1, 4);
        echo gui_table_tag_close();
        if ($type_affichage == $DISPLAY_CREATION || $type_affichage == $DISPLAY_UPDATE) {
            echo gui_form_post_close();
            echo gui_info_message($MESSAGE_9000);
        }
    }

//============================================================================
// show_list_client_accounts
//============================================================================
    public function show_list_client_accounts() {
        GLOBAL $REQUEST_008, $LABEL_0022, $LABEL_0026, $LABEL_0027, $LABEL_0028,
        $DISPLAY_VISUALISATION, $DISPLAY_UPDATE,
        $ICON_VISUALISATION, $ICON_UPDATE, $ICON_DELETE;

        $data = db_request_select($REQUEST_008);

        echo gui_table_tag_open("100%", 0, 0, 0, NULL, NULL, NULL);

// les entêtes du table
        echo gui_tr_tag_open();
        echo gui_th_tag($LABEL_0026, NULL, "left", NULL, NULL, NULL, "td_data_bold border-radius-tl", NULL, NULL);
        echo gui_th_tag($LABEL_0027, NULL, "left", NULL, NULL, NULL, "td_data_bold", NULL, NULL);
        echo gui_th_tag($LABEL_0028, NULL, "left", NULL, NULL, NULL, "td_data_bold border-radius-tr", NULL, NULL);
        echo gui_tr_tag_close();

        $alter = false;
        $class = "tr_ligne_2";
        for ($inc = 0, $stop = (count($data) - 1); $inc < $stop; $inc++) {

            echo gui_tr_tag_open(NULL, NULL, $class, NULL, NULL);
            echo gui_td_tag($data[$inc][1], "40%", NULL, NULL, NULL, NULL, NULL, NULL, 'padding-left:5px;');
            echo gui_td_tag($LABEL_0022 . ":&nbsp;" . $data[$inc][3], "40%", NULL, NULL, NULL, NULL, NULL, NULL, NULL);
            echo gui_td_tag_open("20%", NULL, NULL, NULL, NULL, NULL, NULL, NULL);

            echo gui_jqueryui_ul_open();

// View form

            echo gui_jqueryui_li_icon($ICON_VISUALISATION, "onclick=\"$('#dialog_read_account').data({base:'" . BASE_WWW . "',id:" . $data[$inc][0] . "}).dialog('open');\"");

// Update form

            echo gui_jqueryui_li_icon($ICON_UPDATE, "onclick=\"$('#dialog_update_account').data({base:'" . BASE_WWW . "',id:" . $data[$inc][0] . "}).dialog('open');\"");

// Delete form

            echo gui_form_post_open("client_delete_" . $data[$inc][0], RenderUrl('accounts/delete?account=list'));
            echo gui_form_input_hidden_field("id_client_account", $data[$inc][0]);
            echo gui_jqueryui_li_icon($ICON_DELETE, "onclick=\"$('#dialog_delete_account').data({id:" . $data[$inc][0] . "}).dialog('open');\"");
            echo gui_form_post_close();

            echo gui_jqueryui_ul_close();

            echo gui_td_tag_close();
            echo gui_tr_tag_close();

            if ($alter) {
                $class = "tr_ligne_2";
                $alter = false;
            } else {
                $class = "tr_ligne_1";
                $alter = true;
            }
        }
        echo gui_table_tag_close();

        return count($data) - 1;
    }

}
